iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
自我挑戰組

System Software Introduction系列 第 22

The Verification of System Software - Kernel Test​

  • 分享至 

  • xImage
  •  

What is the Kernel Test

Kernel可以區分為多個modules並且區分多種功能,Kernel test是針對kerenl當中每個module/功能進行廣泛驗證的測試流程。

Why the Kernel Test is Needed

  • Kernel負責控制hardware resource的使用,為確保kernel能達到目的,kernel對hardware進行的控制正確性需要驗證
  • Application software與system utilities會透過system library使用kernel提供的服務,為確保上層software執行的穩定性,kernel的功能正確性需要驗證

The Flow of the Kernel Test

通常kernel test會針對kernel的每項module/功能的正確性、exception handling、安全性進行測試,但kernel test功能繁多,從頭開始開發kernel test cases是不切實際的,所以通常會先使用現有工具提供的測項,再另外針對開發過程修改新增的kernel module/功能去修改或新增testcase。

以Linux kernel為例
現有工具: Ktest, LTP (Linux Test Project)、Autotest都提供大量的內建testcase可以被執行使用。
撰寫自己的kernel testcase,現行兩種流行的test framework可以協助新kernel test的撰寫

  1. Kunit: 在kernel內部單獨進行一個一個功能進行驗證,可以直接使用kernel mode執行測試而不需要system call。可以執行得快,但通常是為了驗證一個單獨功能而不會測試功能。
  2. Kself test: 在user mode執行,可以呼叫其他library的功能,所以能涵蓋的項目更多,但使用到kernel功能會需要執行system call,所以會Kself test的驗證速度會此較慢。

The Issues in kernel Test

  • Testcase bugs: 按照spec或和其他討論過的功能developer修改測項
  • Kernel bugs: 先確認kernel是否有已知的patch可先使用,如果是known issue則先更新新的可用版本,而不是全新的bug,就先嘗試修復再上傳給upstream (例如: LLVM)

上一篇
The Verification of System Software - Device Driver Test
下一篇
The Verification of System Software - ​ Test Framework​
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言